iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
Modern Web

Git 起來!每日一招學起來系列 第 17

Day 17:git fetch —— 偷偷打聽雲端最新動態

  • 分享至 

  • xImage
  •  

昨天我們學了 git push,知道怎麼把自己的 commit 傳上遠端。

但協作不是單向的,你的同事也會 push 新東西上去。

這時候,你要怎麼 更新本地的遠端資訊 呢?

今天的主角是 git fetch,它就像情報員一樣,幫你低調拿到最新情報,但不會直接干擾你的工作。


git fetch 是什麼?

fetch 的意思就是「抓取」。
在 Git 世界裡,git fetch 會去遠端倉庫下載最新的資料,但只更新 遠端追蹤分支(remote-tracking branches),例如 origin/main

不會動到你本地的分支,所以檔案內容也不會變。

換句話說:

git fetch = 拿到最新消息,但不行動

這和後續要講的 git pull 不同,git pullfetch + merge,會直接把遠端更新合併到當前分支,有時可能導致衝突。


為什麼要用 git fetch

想像你在開發專案,但同事可能已經在遠端分支做了修改。

  • 直接 git pull → 可能會意外合併,產生衝突。
  • git fetch → 先打聽遠端最新動態,再決定是否合併,本地安全又安心。

工作流程建議:

1️⃣ 先 git fetch 查看遠端最新消息
2️⃣ 再決定合併策略(git mergegit rebase


基本用法

# 從預設遠端(通常是 origin)抓取更新
git fetch

# 指定遠端
git fetch origin

# 指定分支
git fetch origin main

抓取後可以用以下方式查看更新的 commit :

git log main..origin/main

也可以用:

git log HEAD..origin/main --oneline
  • HEAD..origin/main:比對本地 HEAD 與遠端 main 的差異
  • -oneline:簡化輸出,快速了解有哪些新提交

這會顯示遠端有但你本地還沒有的 commit。


使用情境

  1. 想先觀察,不想立刻合併

    → 適合在敏感專案中先確認變動。

  2. 多人協作,避免直接衝突

    → 先 fetch,再決定要不要 merge 或 rebase。


常見誤會

「我明明 fetch 了,為什麼檔案沒變?」

因為 fetch 只更新遠端追蹤分支,本地分支還沒同步。

要同步,需要手動 mergerebase,例如:

git merge origin/main

小挑戰 💪

  1. 對專案執行 git fetch,抓取遠端更新資料。
  2. 使用 git log HEAD..origin/main --oneline 查看遠端新提交。
  3. 決定是否 git merge origin/main 將更新合併到本地。

小結

  • git fetch 是低調型情報員:先打聽遠端最新消息,不改動本地分支。
  • 適合「先觀察、再決定」的情境,降低衝突風險。
  • 搭配 git log 與遠端分支比對,可以掌握團隊最新動態,為協作做好準備。
  • git pull 的差別,就是 fetch 不會自動合併

明日預告

明天我們將進入 Day 18:git pull —— 把遠端改動同步到本地

學會 pull 後,你就能把團隊最新的進度快速拉到本地,完成協作流程的最後一步,不再錯過任何更新。


上一篇
Day 16:git push —— 把你的程式碼推上雲端
下一篇
Day 18:git pull —— 雲端動態立即入庫
系列文
Git 起來!每日一招學起來18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言